#coding:utf-8
'''测试数据库相关'''
import unittest
from author import app, db, Author

class TestDatabase(unittest.TestCase):
    '''测试数据库的案例'''
    def setUp(self):
        """在测试数据库前,应该用自己的数据库,并且清空表"""
        """在测试结束后,也应该将用于测试的数据库清除掉"""
        #先连接测试数据库
        app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:mysql@127.0.0.1:3306/db_test"
        #这里的app的配置已经改变,所以后面可以对数据库进行清除和创造
        db.drop_all()
        db.create_all()

    def test_author(self):
        """测试添加作者的案例"""
        author = Author(name='itcast')
        db.session.add(author)
        db.session.commit()

        ret_author = Author.query.filter_by(name='itcast').first()
        #todo 首先判断是否能查到
        self.assertIsNotNone(ret_author)
        #todo 其次判断是否跟写入的值一样
        self.assertEqual(ret_author.name, 'itcast')

    def tearDown(self):
        """在所有测试方法执行后被调用"""
        #清除记录的测试任务
        db.session.remove()
        #清除数据库数据
        db.drop_all()


if __name__ == '__main__':
    unittest.main()
